import { postAddLog } from '@/api/log.js'

// 传的参数格式
// vals: {
//     instanceId: '', // 对应选中的id
//     route: this.$route, // 当前路由信息
//     typeObj: { // 埋点类型
//       value: '02',
//       name: '修改',
//       specificTypeName: '修改基本属性' // 具体操作的类型
//     },
//     valObj: {
//       newVal: {}, // 最新的值 需要赋值
//       oldVal: {}, // 之前的值 // 修改需要
//       labelVal: {} // 属性名称
//     },
//     fileName: [] // 下载，预览，签出，签入，取消签出，添加附件，导出 需要传
//   }

// 创建axios实例F
const setLog = (vals = {}) => {
  // 工作空间id
  const workspaceId = JSON.parse(localStorage.getItem('workspaceId'))
  // 用户
  const loginName = JSON.parse(localStorage.getItem('loginName'))
  const val = vals // 自定义参数值

  const instanceId = val.instanceId ? val.instanceId : '' // id 选中操作的数据
  const route = val.route ? val.route : {} // 具体详细值
  const valObj = val.valObj ? val.valObj : {} // 具体详细值
  const typeObj = val.typeObj ? val.typeObj : {} // 埋点类型
  const fileName = val.fileName ? val.fileName : [] // 文件名
  const specificTypeName = typeObj.specificTypeName ? `<${typeObj.specificTypeName}> ` : '' // 具体操作的类型名称
  const newVal = valObj.newVal ? valObj.newVal : {} // 最新的值
  const oldVal = valObj.oldVal ? valObj.oldVal : {} // 之前的值
  const labelVal = valObj.labelVal ? valObj.labelVal : {} // 属性名称
  let operation = '' // 详细信息
  if (Object.prototype.toString.call(val) !== '[object Object]') {
    console.log('不符合要求')
    return
  } else if (route === {}) {
    return
  }
  const params = {
    instanceId: instanceId, // 当前操作数据的id
    workspaceId: workspaceId, // 工作空间id
    operation: '', // 详细信息
    logType: '' // 页面id,区分当前操作的页面
  }
  const path = route.path
  if (path === '/materials') {
    params.logType = '0'
  } else if (path === '/document') {
    params.logType = '1'
  }
  // 创建:01，修改:02，另存:03，下载:04，预览:05，签出:06，签入:07，取消签出:08，添加附件:09
  if (['01', '03'].includes(typeObj.value)) {
    operation = specificTypeName
    if (!Object.keys(newVal).length) {
      return
    }
    for (const key in newVal) {
      if (labelVal[key] !== undefined) {
        operation += `${labelVal[key]}:${newVal[key]}，`
      }
    }
  } else if (['02'].includes(typeObj.value)) {
    operation = `[${loginName}] ${specificTypeName}`
    if (!Object.keys(newVal).length) {
      return
    }
    for (const key in newVal) {
      if (newVal[key] !== oldVal[key]) {
        operation += `${labelVal[key]}：以前为<${oldVal[key]}>现在为<${newVal[key]}>，`
      }
    }
  } else if (['04', '05', '06', '07', '08', '09'].includes(typeObj.value)) {
    operation = `[${loginName}] ${specificTypeName}`
    if (!fileName.length) {
      return
    }
    for (const key in fileName) {
      operation += `${fileName[key]}，`
    }
  } else {
    return
  }

  params.operation = operation
  postAddLog(params).then(res => {})
}
export default setLog
